Solidifying the executable software set of a computer

ABSTRACT

System and method for solidifying (or “freezing”) the set of software and configuration data available for execution on a computer. Any additional software installed on the computer after the solidification process will not execute, regardless of whether the installation is initiated or otherwise performed by a person with administrative privilege. The ability to allow new or modified software to execute on the computer rests with an integrity server separate from and outside of the solidified computer. The solidification of software and configuration data proceeds on a level of granularity selectable by the integrity server and any operators thereof.

BACKGROUND

1. Field

Invention relates generally to computer systems, and in particular to fixing the set of software available for execution on a computer.

2. Related Art

The set of software available for execution on a computer is generally dynamic to and modifiable, even when such modification is not desirable. Restricting the ability of users or administrators of a computer to install and remove software or to modify configuration of the existing software is enforced with passwords or verbal and written policies and guidelines. However, when passwords are used, possessors of administrative passwords generally have access beyond their immediate responsibilities.

Accordingly, there is a need for a technique that allows the solidification (or “freezing”) of the set of software available for execution on a computer, wherein the software is solidified according to a granular policy, and wherein the ability to change such a policy resides outside of the solidified computer.

SUMMARY

System and method for solidifying (or “freezing”) the set of software and configuration data available for execution on a computer. Any additional software installed on the computer after the solidification process will not execute, regardless of whether the installation is initiated or otherwise performed by a person with administrative privilege. The ability to allow new or modified software to execute on the computer rests with an integrity server separate from and outside of the solidified computer. The solidification of software and configuration data proceeds on a level of granularity selectable by the integrity server and any operators thereof.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an architecture for solidifying an executable software set of a computer, according to an embodiment of the present invention.

FIG. 2 is a block diagram illustrating a mapping table comprising one or more name space translations corresponding to one or more interfaces, according to an embodiment of the present invention.

FIG. 3 is a block diagram illustrating a name space translation indicating a forward translation from an original name space to a translation name space, as well as a corresponding reverse translation, according to an embodiment of the present invention.

FIG. 4 is a block diagram illustrating an example set of possible states for a solidified computer, according to an embodiment of the present invention.

FIG. 5 is a block diagram illustrating a name space translation indicating a forward translation T from an original name space to a translation name space, as well as a corresponding reverse translation T¹, according to an embodiment of the present invention.

FIG. 6 is a flow diagram illustrating a method for executing a piece of software on a solidified computer, according to an embodiment of the present invention.

DETAILED DESCRIPTION

The following serves as a glossary of terms as used herein:

Computer: Any computing system comprising an operating system providing a set of resources for use by one or more pieces of software for execution on the computing system.

Software: Any set of instructions for execution on a computer. A piece of software may use one or more services or resources as provided by the computer through one or more interfaces.

Interface: A language, protocol or other boundary for providing a service or making available a resource to a piece of software on a computer. An interface comprises a name space, knowledge of which is needed for successful usage of the interface. For a given interface to a service or resource, an implementation of the service or resource fulfills requests made through the interface. One example of an interface comprises an Application Programming Interface (API) such as a system call interface of an operating system, wherein the name space comprises system call names or system call addresses, and the implementation comprises the portion of the operating system implementing the actual system calls. Another example of an interface comprises a set of function calls to a library, wherein the name space comprises function names or function addresses, and the implementation comprises the actual library code implementing the functions. Other interface examples include language APIs (such as a PERL API, Java API, PHP API, shell script APIs, etc.), database APIs, an interface to a file system of a computer (wherein the name space comprises a set of file names), and any interface to a container of data.

Invention operates in combination with a computer's operating system in order to solidify (or “freeze”) the set of software available for execution on the computer. Any software, modified or installed on the computer after the solidification process, cannot be executed on the computer regardless of whether the modification or installation was initiated or otherwise performed by a person with administrative privilege or with access to passwords or other such credentials pertaining to the computer. The ability to enable modified or additional software to execute on the computer resides with an entity (herein called an “integrity server”) outside of the solidified computer.

FIG. 1 illustrates an architecture for solidifying an executable software set of a computer, according to an embodiment of the present invention. Prior to a solidification (or “freezing”) process, a computer 102 comprises an installed software base, for example as prepared by a manufacturer or seller of the computer 102. A user or an administrator of the computer 102 may have proper privilege to direct execution of such already installed programs, to inspect data on the computer 102 (such as log files or reports), to power-up or power-down the computer 102, or otherwise to make appropriate use of the computer 102 and its installed software base. However, once the software base of the computer 102 is solidified, such a user or administrator cannot modify or add to the set of software available for execution on the computer 102, since such ability resides with an integrity server 101 separate and distinct from the computer 102.

Prior to a solidification process, computer 102 makes one or more interfaces available to software modules for proper execution of said software modules on computer 102. A solidification of computer 102 comprises translating one or more of the interfaces provided by computer 102, such that software modules are no longer able to use the translated interfaces. In order to enable a software module to use the translated interfaces and properly execute on such a solidified computer 102, the software module is then translated according to the translated interfaces.

It is an advantageous aspect that individual interfaces can be independently to translated (hereinafter also referred to as “solidified” or “frozen”) or left untranslated (hereinafter also referred to as “thawed”), thereby providing a level of granularity for the solidification process. FIG. 2 illustrates a set of example states for a solidified computer 102. The middle six columns represent a set of interfaces which individually can be frozen or thawed. The first row (“All Interfaces frozen”) shows all interfaces of system 102 as frozen, and hence system 102 is completely solidified. The second row (“All Interfaces Thawed”) shows all interfaces of system 102 as thawed, lifting protections provided by the solidification process. The third row (“Software Maintenance”) shows all interfaces of system 102 translated except software configuration data. This row indicates a state for allowing a user of system 102 to locally change software configuration data (shown, as an illustrative example, for two individual software applications), as described in more detail below.

FIG. 3 is a flow diagram illustrating a method for preparing a computer 102 for operation in a solidified manner, according to an embodiment of the present invention. Existing software is processed 201 in anticipation for using one or more translated name spaces, the translated name spaces for referring to interfaces which are to be translated (i.e. “frozen”). Since said translated name spaces may not yet be defined, the processing step 201 comprises generating a set of placeholders for the software, such placeholders indicating that a reference name (at a given position in the software code), taken from an interface name space, is to be replaced with a corresponding translated name in a corresponding translated name space. Note that the actual translations need not yet be defined, and a placeholder indicates that a name n is to be replaced with a translation T(n), wherein T represents the actual translation once such a translation is defined (in step 203) by way of a mapping table. The set of placeholders resulting from the processing step 201, and associated with the corresponding software, is hereinafter referred to as an “sdiff”.

In step 202, the runtime environment of computer 102 is modified such that a request to execute a piece of software results in an attempt to replace the corresponding placeholders (given by the corresponding sdiff) with translated names (according to the mapping table) prior to execution of the software. In one embodiment, this alteration is set to take effect at the next boot-up of computer 102. In another embodiment, the alteration takes effect before the next boot-up of computer 102. In step 203, a mapping table is defined for use by the altered runtime environment. Hereinafter, two “modes” are identified for the runtime environment of computer 102: a “restricted mode” wherein the runtime environment of computer 102 attempts to replace placeholders in a piece of software (according to a corresponding sdiff, if such exists) and use a mapping table in order to execute the software, and an “unrestricted mode” wherein the runtime environment of computer 102 simply executes software without using any sdiffs or any mapping tables.

FIG. 4 is a block diagram illustrating a mapping table 103, according to an embodiment of the present invention. Mapping table 103 comprises one or more name space translations 105 corresponding to one or more interfaces. As shown in FIG. 5, a name space translation 105 indicates a forward translation T from an original name space to a translation name space, as well as a corresponding reverse translation T¹. The translation name space preferably is larger than the original name space, the size increase serving as a precaution against any attempts to recover the name space translation by guessing.

In the example name space translation 105 shown in FIG. 5, names from an original name space A are translated into names taken from a translation name space A′, with two example names x and y from the original name space A shown as translated into names x′ and y′ from the translated name space A′. Note that in general the reverse translation T¹ need not map every unique name from the translation name space A′ into a corresponding unique name in the original name space A. For example, a group of names from the translation name space A′ (indicated by z₁, z₂ and z₃ in FIG. 5) may be mapped into a null value in the original name space A. This will occur for example when the translation name space is larger than the original name space. Specifically, the translation name space A′ preferably comprises the names in A as a subset, such names mapped back to null by the reverse translation T¹, thereby in effect thwarting attempts to use the original untranslated names in A on a solidified system 102. Additionally, the translation name space A′ preferably comprises a large number of names which are neither in A nor in T(A) (e.g. a large number of randomly generated names or name ranges), such names mapped back to null by the reverse translation T¹, thereby thwarting any attempt to guess which names in A′ map back to the original translated names in A.

FIG. 6 is a flow diagram illustrating a method for executing a piece of software on a solidified computer 102, according to an embodiment of the present invention. Receive 210 a request for execution of a piece of software S. If S does not 211 have an associated sdiff, attempt 212 to execute S without translating S. Otherwise 213, translate 214 S according to one or more respective interface name space translations 105 as indicated by the sdiff associated with S and according to the mapping table 103, and execute 215 the translated S. Step 214 preferably occurs during loading of the executable file, symbol resolution and/or dynamic linkage.

The execution steps 212 and 215 comprise an attempt to use appropriate reverse translations (as given by the mapping table 103) for any references to translated interfaces, whether the references (names) are appropriately translated or not. Therefore, if a software S does not have an associated sdiff, references comprising (untranslated) names for referring to a translated interface will be reverse-translated into invalid names, and will hence cause an execution exception, logging, and/or other error handling. The same applies to a piece of code which has been inserted into a software S after an sdiff has been generated for S in step 201. On the other hand, if a software S does have an associated sdiff, references comprising (translated) names for referring to a translated interface will be appropriately reverse-translated to corresponding original names for proper execution on solidified computer 102.

For a translated piece of software (comprising references according to a translated interface) to execute correctly, several techniques can be used independently or in combination. In a first embodiment, computer 102 comprises a translation of an implementation of the corresponding untranslated interface, wherein the translated implementation processes requests according to the translated interface. For example, a PERL interpreter is modified according to a translated PERL language interface, wherein keywords of the PERL language are translated and no longer correspond to standard PERL keywords, for example by replacing the standard PERL keyword “FOR” with a new translated keyword “XH5HKJ831H09L” for the translated PERL interpreter. In this embodiment, a PERL script will execute properly only if the script is in accordance with the translated PERL language interface.

In a second embodiment, an implementation of the corresponding untranslated interface is left unmodified. Instead, execution engine 106 translates requests (expressed according to a translated interface) to requests expressed in the corresponding untranslated interface. As an example, the PERL interpreter is left unmodified, and a PERL script in accordance with the translated interface undergoes a reverse translation before it is handed over to the PERL interpreter for interpretation. Note that in both embodiments, if the interface implementation itself uses any translated interfaces (“secondary interfaces”), then the interface implementation itself is translated according to the translated secondary interfaces. For example, if the PERL interpreter uses the system call interface provided by the operating system of computer 102, and if computer 102 is in a solidified state wherein the system call interface is translated, then the PERL interpreter (whether modified according to the first embodiment or left unmodified according to the second embodiment) is itself translated according to the system call interface translation present on computer 102. As should be obvious to one of ordinary skill in the art, any number of levels of translated interfaces are possible in a solidified computer 102, depending on whether an interface implementation uses translated secondary interfaces or not.

The abstraction of name space translation extends to a third embodiment, comprising verifying a checksum for deciding whether or not to execute a piece of software on computer 102. In this embodiment, a piece of software is regarded as its own “service” having an interface comprising a name space with a single entry, namely a name for the piece of software itself. During a solidification process of computer 102, a checksum is associated with the piece of software, wherein this association effectively represents a translation of the single entry in the name space. Subsequently, when computer 102 receives a request to execute the software, computer 102 executes the software only if the checksum properly verifies (corresponding to provision of the correct translation of the single entry), and refuses to execute the software otherwise. The checksum verification essentially represents a verification that the request to execute the software was according to the translated interface (indicating the software and associated checksum), as opposed to according to the untranslated interface (indicating the software without checksum). This embodiment can be implemented without the use of sdiffs. This embodiment can also be implemented without the use of a mapping table 103, replacing the mapping table 103 lookup with a checksum verification step making use of a mapping which maps pieces of software (requested for execution) to (a) a valid checksum, leading to grant of execution, or to (b) an invalid checksum (including null) leading to a refusal of execution.

A name space translation T 105 may be uniquely associated with a particular piece of software S and with a particular solidified system 102, or it may be shared by more than one piece of software or across more than one solidified system 102. Some techniques for translating an interface and associating such a translated interface with a piece of software are described in copending US patent application entitled “Damage Containment By Translation”, application Ser. No. 10/651,588, filed on Aug. 29, 2003, incorporated herein by reference, and in copending US patent application entitled “Method And System For Containment Of Usage Of Language Interfaces”, application Ser. No. 10/739,230, filed on Dec. 17, 2003, incorporated herein by reference.

In addition to solidifying code portions of the installed software base through name space translation (as described above), one or more configuration data of the installed software base can be solidified as well, independently from the corresponding code portions. This is accomplished by generating a translation of a set of configuration data used by the software. For example, consider a piece of software S which reads and/or writes configuration data using one or more data files, wherein the read and/or write operations rely on a knowledge of the corresponding file names. Solidifying some or all of the configuration data comprises translating the corresponding file names and/or translating the actual data contained in the files. Such files with translated names and/or translated content will be usable to a properly translated piece of software S′, but not to the original untranslated software S. Proper software translation comprises static replacement of the original file names in S′ with translated file names, and/or insertion of instructions (hooks) into S′ for dynamically obtaining the translated file names and translated content during run-time. As should be obvious to one of ordinary skill in the art, this translation technique is not limited to configuration data residing in a file system, but can be analogously applied to configuration data accessible through any API or service interface, by translating the API or service interface and/or translating the content available through the API or service interface.

As described above, managing the executable software set of computer 102 comprises managing (a) the set of sdiffs, (b) mapping table 103, and (c) the mode (“restricted mode” versus “unrestricted mode”) of the runtime environment of computer 102, hereinafter also collectively referred to as the “solidification metadata”. It is an advantageous aspect that these three items can be independently managed and computed, locally or remotely, as described in the following:

-   -   sdiffs: In one embodiment, sdiffs are computed locally on         computer 102. In an alternative embodiment, sdiffs are computed         remotely on integrity server 101 and then sent to computer 102.         Preferably, sdiffs sent from integrity server 101 to computer         102 are authenticated (for example using digital signatures) or         are sent over a secure communications channel (for example via a         Secure Socket Layer (SSL)).     -   Mapping table 103: In one embodiment, mapping table 103 is         computed locally on computer 102, with any recomputations (for         regenerating or adding name space translations 105) also         performed locally. In an alternative embodiment, mapping table         103 is computed remotely on integrity server 101 and then sent         to computer 102. Preferably, a mapping table 103 sent from         integrity server 101 to computer 102 is authenticated (for         example using digital signatures) or is sent over a secure         communications channel (for example via SSL).     -   Mode: In one embodiment, switching from the “restricted mode” to         the “unrestricted mode” (or vice versa) is initiated locally on         computer 102. In an alternative embodiment, such a switch can         only be initiated remotely by integrity server 101, such         initiation using authentication (for example using digital         signatures) or proceeding over a secure communications channel         (for example via SSL).         Optionally, a checksum (as described above for deciding whether         or not to execute a piece of software on computer 102) may be         included as part of the solidification metadata.

To achieve modularity, the writing and reading of the sdiffs, the mapping table 103 and the runtime mode are separated between a writer module and a reader module, with the writer module writing said data onto computer 102 and the reader module retrieving written data when needed. In the embodiments where the computation of said data is performed locally, the writer module resides on computer 102, whereas remote computation of said data comprises a remote writer module communicating with computer 102, using authentication (for example digital signatures) or a secure communications channel (such as SSL). In an optional embodiment, such a remote writer module does not write all of said data, but instead writes a (possibly empty) subset thereof (e.g. the mode only) as well as one or more authenticators for validating the entire data. Such authentication may comprise digital signatures, transport-level authentication such as SSL, or any other authentication mechanisms.

Remote management of the solidification metadata by integrity server 101 results in the advantageous aspect that knowledge of the specific unique structure and encoding of the solidification metadata used to enforce a frozen executable software set on computer 102 resides with integrity server 101 and outside of computer 102. As a consequence, while a party other than integrity server 101 may be able to install additional software on frozen system 102, such software remains unexecutable until one or more items in the solidification metadata are properly modified by the integrity server 101 (or their local modification is authorized by integrity server 101) so as to enable the additional software to properly execute on frozen system 102, as described above. For example, in one embodiment, the integrity server 101 generates a modified mapping table 103 and sends it to computer 102. In another embodiment, the integrity server 101 sends data to computer 102, the data for locally generating a new mapping table 103 on computer 102. In both embodiments, it is an advantageous aspect that the knowledge, possessed by the integrity server 101 and used to construct or modify a mapping table 103 for a computer 102, is distinct from the knowledge of the actual name space translations 105 of the mapping table 103.

It is an advantageous aspect that tampering with the solidification metadata is rendered detectable. To accomplish this, solidification metadata resident on computer 102, solidification metadata sent by the integrity server 101 to computer 102, and/or data sent by the integrity server 101 for locally generating one or more portions of the solidification metadata on computer 102, are authenticated. Such authentication comprises for example digitally signing the solidification metadata (or transmitted portions thereof) and the data, or using other data integrity techniques (such as checksums) or authentication techniques as should be obvious to one of ordinary skill in the art. Correspondingly, computer 102 verifies authenticity and/or integrity of the solidification metadata, or of the data received from integrity server 101 for locally generating solidification metadata (or portions thereof), prior to using the solidification metadata or the data. One example comprises the execution engine 106 refusing to execute software if the solidification metadata have been tampered with. Another example comprises computer 102 refusing to update the solidification metadata if data received from integrity server 101 is not successfully authenticated. In another example, integrity server 101 verifies authenticity and integrity of the solidification metadata, and replaces any compromised portions of the solidification metadata (such as a compromised mapping table 103) with freshly generated ones.

Optionally, one or more portions of the solidification metadata on the frozen system 102 are periodically regenerated (with new name space translations) for increased defense against guessing attacks. Process migration techniques can be used to change one or more name space translations 105 associated with a process while the process is executing.

Optionally, the translated name spaces need not be persistently stored on frozen system 102, but can instead be computed when frozen system 102 powers up, and recomputed at any later times.

It is another advantageous aspect that when modifying a piece of software already resident on frozen system 102, or when installing a new piece of software onto frozen system 102, the integrity server 101 need not perform the actual modification or installation (although optionally the integrity server 101 can perform such tasks). The integrity server 101 simply properly modifies the solidification metadata, leaving the modification or installation of software to other parties, such as (a) a user or an administrator of frozen system 102, or (b) an automatic software modification or installation process. However, a modified or newly installed piece of software does not properly execute on the frozen system 102 unless the solidification metadata are appropriately modified by the integrity server 101 and the piece of software is translated according to the mapping table 103 (as described above).

Note that the “software maintenance” state may be further refined to comprise any number of individual interfaces, or groups of interfaces, by adding appropriate columns to the table of FIG. 4. For example, a useful state may distinguish between application configuration data and system configuration data, thereby separating system maintenance mode (for changing system configuration data) from application maintenance mode (for changing application configuration data). Another useful state (“software installation state”) may comprise an untranslated system call interface while leaving other interfaces translated. This state would be useful for running software installers which do need the system call interface to execute properly. After an installer has completed installation of a software (and optionally removal of old versions of the software from computer 102), computer 102 transitions into a state where the system call interface again is solidified (i.e. translated). Note that any thusly installed software still undergo translation in order to properly execute on solidified computer 102. In general, it is an advantageous aspect that code execution and system administration on a system 102 can be separated to any desired degree by choosing a set of independent interfaces so as to provide sufficient granularity for generating a large enough set of possible states of computer 102.

With respect to persistent computer 102 data (such as configuration files, software instruction (code) files, dynamic libraries, operating system registries, etc.) to which the operating system of system 102 provides one or more interfaces for modifications, an optional embodiment allows writes even in a solidified state. However, as in a logging (or journaling) file system, such writes are merely logged and pending, and not yet committed. Once a user of solidified computer 102 has performed one or more changes (i.e. pending write operations), the user may request that the integrity server 101 (or an administrator thereof) commit the user's changes to the solidified computer 102. The integrity server 101 (or an administrator thereof) may then review the user's changes, and either accept all or part of the changes (by committing the accepted changes), reject all or part of the changes (by rolling back the rejected changes), and/or leave all of part of the changes for later inspection.

Foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, it is contemplated that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks, and that networks may be wired, wireless, or a combination of wired and wireless. Other variations and embodiments are possible in light of above teachings, and it is thus intended that the scope of invention not be limited by this Detailed Description, but rather by Claims following. 

1. A method, comprising: receiving a request for executing an original software program within a plurality of software programs on a first computer, the original software program comprising a first one or more references corresponding to one or more original calling names associated with the original interface, wherein a set of data is received from a second computer over a network at the first computer that includes the original interface, wherein the second computer authorizes modifications to the plurality of software programs being executed on the first computer, and wherein a new software program downloaded by the first computer remains unexecutable until the second computer authorizes the new software program using a checksum operation; and translating the original software program to obtain a translated software program, including replacing the first one or more references with a second one or more references corresponding to one or more translated calling names associated with a translated interface, wherein the one or more translated calling names are invalid for calling the original interface, and reverse translating the translated software program to obtain a reverse translated software program, the reverse translated software program not being executable as the original software program if the translated software program comprises additional references corresponding to the one or more original calling names prior to the reverse translation, and wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein a calling name space translation is larger than the original name space; and communicating enabling data to the first computer, wherein the first computer includes additional software that is unexecutable due to the translating activities, and wherein the enabling data is configured to be used by the first computer to enable the additional software to execute.
 2. The method of claim 1, wherein the original interface comprises a language interface provided by a language interpreter residing on the first computer.
 3. The method of claim 1, wherein a first checksum is associated with one of the translated software programs, such that upon a request for execution of one of the translated software programs, a second checksum is computed for the one of translated software programs, further wherein the translated software program is executed when the second checksum matches the first checksum and is not executed when the second checksum does not match the first checksum.
 4. The method of claim 3, wherein the first checksum is generated or approved by a second computer.
 5. A method, comprising: receiving a set of data from a first computer over a network at a second computer, wherein the first computer authorizes modifications to a plurality of software programs being executed on the second computer, and wherein a new software program downloaded by the second computer remains unexecutable until the first computer authorizes the new software program using a checksum operation; generating a calling name space translation on the second computer according to the set of data, wherein one or more original calling names associated with an original interface are translated into one or more translated calling names associated with a translated interface, translating an original software program of the plurality of software programs to obtain a translated software program, the original software program comprising a first one or more references corresponding to the one or more original calling names, wherein the translating includes replacing the first one or more references with a second one or more references corresponding to the one or more translated calling names, wherein the one or more translated calling names are invalid for calling the original interface, reverse translating the translated software program to obtain a reverse translated software program, the reverse translated software program not being executable as the original software program if the translated software program comprises additional references corresponding to the one or more original calling names prior to the reverse translation, and wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein the calling name space translation is larger than the original name space.
 6. The method of claim 5, further comprising verifying that the set of data comprises a valid digital signature.
 7. The method of claim 5, further comprising storing the calling name space translation on the second computer.
 8. A method, comprising: sending, by an administrative server, a set of data to a computer over a network, wherein the administrative server authorizes modifications to a plurality of software programs being executed on the computer, and wherein a new software program downloaded by the computer remains unexecutable until the administrative server authorizes the new software program using a checksum operation; generating a calling name space translation on the computer according to the set of data, wherein one or more original calling names associated with an original interface are translated into one or more translated calling names associated with a translated interface, translating an original software program of the plurality of software programs to obtain a translated software program, the original software program comprising a first one or more references corresponding to the one or more original calling names, wherein the translating includes replacing the first one or more references with a second one or more references corresponding to the one or more translated calling names, wherein the one or more translated calling names are invalid for calling the original interface, and reverse translating the translated software program to obtain a reverse translated software program, the reverse translated software program not being executable as the original software program if the translated software program comprises additional references corresponding to the one or more original calling names prior to the reverse translation, and wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein the calling name space translation is larger than the original name space; and communicating enabling data to the computer, wherein additional software in the computer is unexecutable due to the translating activities, and wherein the enabling data is configured to be used by the computer to enable the additional software to execute.
 9. The method of claim 8, further comprising digitally signing the set of data prior to sending the set of data.
 10. Computer readable media, comprising: an original calling name space associated with an original interface, wherein a set of data is received from a first computer over a network at a second computer that includes the original calling name space, wherein the first computer authorizes modifications to a plurality of software programs being executed on the second computer, and wherein a new software program downloaded by the second computer remains unexecutable until the first computer authorizes the new software program using a checksum operation; a translated calling name space residing in the second computer and comprising a name space translation of the original calling name space, wherein one or more original calling names associated with the original calling name space are translated into one or more translated calling names associated with the translated calling name space, and a data structure including one or more sequences of instructions for translating an original software program to obtain a translated software program, wherein the original software program comprises a first one or more references corresponding to the one or more original calling names, wherein the one or more sequences of instructions includes replacing the first one or more references with a second one or more references corresponding to the one or more translated calling names, wherein the second one or more translated calling names are invalid for calling the original interface, and wherein the translated software program is reverse translated to obtain a reverse translated software program, the reverse translated software program not being executable as the original software program if the translated software program comprises additional references corresponding to the one or more original calling names prior to the reverse translation, and wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein the calling name space translation is larger than the original name.
 11. The method of claim 1, wherein the original interface comprises a set of one or more system calls provided by an operating system of the first computer.
 12. The method of claim 1, further comprising executing the translated software program on the first computer.
 13. The method of claim 12, wherein the executing step comprises: passing one or more requests to an implementor of the original interface, the one or more requests as represented by the first one or more references.
 14. The method of claim 12, wherein the executing step comprises passing one or more requests to an implementor of the translated interface, the one or more requests as represented by the second one or more references.
 15. The method of claim 1, wherein a first checksum is associated with the original software program, and further comprising: computing a second checksum for the translated software program; executing the translated software program on the first computer when the second checksum matches the first checksum; and refusing to execute the translated software program on the first computer when the second checksum does not match the first checksum.
 16. The method of claim 15, wherein the first checksum is generated or approved by a second computer.
 17. The method of claim 1, wherein a second computer controls the translating.
 18. The method of claim 1, wherein the original interface is text based and wherein the translated interface is text based. 